// #include 应该出现在打开命名空间之前
#include <string>

using namespace std;

namespace cplusplus_primer {
    class Sales_data { /* ... */ };
    Sales_data operator+(const Sales_data&, const Sales_data&);
    class Query { 
        public:
            Query(const string &s): query_word(s) {}
        private:
            string query_word;
    };
    class Query_base { /* ... */ };
} // 命名空间结束后无须分号，这一点与块类似

/**
 * 命名空间可以是不连续的（即使是不同文件中）
 * 如果之前没有该名字的命名空间，则创建一个新的命名空间
 * 否则，打开该名字的命名空间，为其添加一些新成员的声明
 */
namespace cplusplus_primer {
    Sales_data operator+(const Sales_data&, const Sales_data&)
        { /* ... */ }
}

int main()
{
    cplusplus_primer::Query q = cplusplus_primer::Query("hello");
}